/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.camachosanchez.gui;

import com.camachosanchez.bean.ControlCambioNeumatico;
import com.camachosanchez.bean.DetalleControlCambioBateria;
import com.camachosanchez.bean.DetalleControlCambioNeumatico;
import com.camachosanchez.bean.InspeccionEquipo;
import com.camachosanchez.bean.Pilotos;
import com.camachosanchez.bean.Vehiculos;
import com.camachosanchez.controler.jdbc.ControlCambioNeumaticoJdbcControler;
import com.camachosanchez.controler.jdbc.InspeccionEquipoJdbcControler;
import com.camachosanchez.controler.jdbc.VehiculosJdbcControler;
import com.camachosanchez.controler.jpa.PilotosJpaController;
import com.camachosanchez.controler.jpa.VehiculosJpaController;
import com.camachosanchez.gui.table.ModeloTablaBuscarEquipo;
import com.camachosanchez.gui.table.RenderizadorTabla;
import com.camachosanchez.gui.table.TableSorter;
import com.camachosanchez.reportes.bean.InformacionUnidad;
import com.camachosanchez.util.Constantes;
import com.camachosanchez.util.GUIUtil;
import com.camachosanchez.util.ReportUtil;
import java.beans.PropertyVetoException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.WindowConstants;
import javax.swing.event.InternalFrameEvent;
import javax.swing.table.DefaultTableModel;
import net.coderazzi.filters.gui.TableFilterHeader;

/**
 *
 * @author Rolando
 */
public class BusquedaEquipo extends javax.swing.JInternalFrame {

    private ModeloTablaBuscarEquipo modelo;
    private TableFilterHeader filterHeader;
    private TableSorter tableSorter;

    /**
     * Creates new form BusquedaEquipo
     */
    public BusquedaEquipo() {
        initComponents();
        modelo = new ModeloTablaBuscarEquipo();
        tableSorter = new TableSorter(modelo, tblUnidades.getTableHeader());
        tblUnidades.setModel(tableSorter);
        filterHeader = new TableFilterHeader();
        filterHeader.setTable(tblUnidades);
        RenderizadorTabla render = new RenderizadorTabla();
        tblUnidades.setDefaultRenderer(Class.class, render);
//        llenarTabla(0, "");
        tblUnidades.getTableHeader().setReorderingAllowed(false);
        setFrameIcon(new ImageIcon(getClass().getResource("/com/camachosanchez/recursos/table.png")));
        this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        this.addInternalFrameListener(new javax.swing.event.InternalFrameAdapter() {

            @Override
            public void internalFrameClosing(InternalFrameEvent e) {
                cerrar();
            }
        });
    }

    private void cerrar() {
        GUIUtil.maximizarTodasLasVentanas(this);
    }

    private void setColumnaOculta() {
        tblUnidades.getColumnModel().getColumn(1).setMinWidth(0);
        tblUnidades.getColumnModel().getColumn(1).setMaxWidth(0);
        tblUnidades.getColumnModel().getColumn(1).setPreferredWidth(0);
    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        buttonGroup1 = new javax.swing.ButtonGroup();
        pnlContenedor = new javax.swing.JPanel();
        scrContenedor = new javax.swing.JScrollPane();
        tblUnidades = new javax.swing.JTable();
        toolBarPrincipal = new javax.swing.JToolBar();
        btnVerDetalle = new javax.swing.JButton();
        jSeparator6 = new javax.swing.JToolBar.Separator();
        btnInformacion = new javax.swing.JButton();
        jSeparator10 = new javax.swing.JToolBar.Separator();
        btnActualizar = new javax.swing.JButton();
        jSeparator11 = new javax.swing.JToolBar.Separator();
        btnMediciones = new javax.swing.JButton();
        jSeparator5 = new javax.swing.JToolBar.Separator();
        btnMontajes = new javax.swing.JButton();
        jSeparator4 = new javax.swing.JToolBar.Separator();
        jButton1 = new javax.swing.JButton();
        jSeparator8 = new javax.swing.JToolBar.Separator();
        btnRegistroSalida = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        btnRegistroEntrada = new javax.swing.JButton();
        jSeparator3 = new javax.swing.JToolBar.Separator();
        btnMovimientos = new javax.swing.JButton();
        jSeparator7 = new javax.swing.JToolBar.Separator();
        jButton3 = new javax.swing.JButton();
        jSeparator2 = new javax.swing.JToolBar.Separator();
        jButton2 = new javax.swing.JButton();
        jSeparator9 = new javax.swing.JToolBar.Separator();
        btnEliminar = new javax.swing.JButton();

        setClosable(true);
        setDefaultCloseOperation(javax.swing.WindowConstants.HIDE_ON_CLOSE);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle(".:: Búsqueda de Unidad ::.");
        try {
            setSelected(true);
        } catch (java.beans.PropertyVetoException e1) {
            e1.printStackTrace();
        }

        pnlContenedor.setLayout(new java.awt.BorderLayout());

        scrContenedor.setBackground(new java.awt.Color(255, 255, 255));
        scrContenedor.setOpaque(false);

        tblUnidades.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {

            }
        ));
        tblUnidades.setRowHeight(22);
        tblUnidades.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        scrContenedor.setViewportView(tblUnidades);

        pnlContenedor.add(scrContenedor, java.awt.BorderLayout.CENTER);

        getContentPane().add(pnlContenedor, java.awt.BorderLayout.CENTER);

        toolBarPrincipal.setBackground(new java.awt.Color(255, 255, 255));
        toolBarPrincipal.setBorder(javax.swing.BorderFactory.createEtchedBorder());
        toolBarPrincipal.setFloatable(false);
        toolBarPrincipal.setRollover(true);
        toolBarPrincipal.setPreferredSize(new java.awt.Dimension(593, 30));

        btnVerDetalle.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_edit.png"))); // NOI18N
        btnVerDetalle.setText("Ver Detalle");
        btnVerDetalle.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnVerDetalle.setFocusable(false);
        btnVerDetalle.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnVerDetalle.setOpaque(false);
        btnVerDetalle.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnVerDetalleActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnVerDetalle);
        toolBarPrincipal.add(jSeparator6);

        btnInformacion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_new.png"))); // NOI18N
        btnInformacion.setText("  Información");
        btnInformacion.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnInformacion.setFocusable(false);
        btnInformacion.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnInformacion.setMinimumSize(new java.awt.Dimension(82, 19));
        btnInformacion.setOpaque(false);
        btnInformacion.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        btnInformacion.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnInformacionActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnInformacion);
        toolBarPrincipal.add(jSeparator10);

        btnActualizar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_update.png"))); // NOI18N
        btnActualizar.setText("Actualizar");
        btnActualizar.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnActualizar.setFocusable(false);
        btnActualizar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnActualizar.setOpaque(false);
        btnActualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnActualizarActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnActualizar);
        toolBarPrincipal.add(jSeparator11);

        btnMediciones.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_medicion.png"))); // NOI18N
        btnMediciones.setText("Mediciones");
        btnMediciones.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnMediciones.setFocusable(false);
        btnMediciones.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnMediciones.setOpaque(false);
        btnMediciones.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnMedicionesActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnMediciones);
        toolBarPrincipal.add(jSeparator5);

        btnMontajes.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_montajes.png"))); // NOI18N
        btnMontajes.setText("Montajes");
        btnMontajes.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnMontajes.setFocusable(false);
        btnMontajes.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnMontajes.setOpaque(false);
        btnMontajes.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnMontajesActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnMontajes);
        toolBarPrincipal.add(jSeparator4);

        jButton1.setBackground(new java.awt.Color(255, 255, 255));
        jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/alineaciones.png"))); // NOI18N
        jButton1.setText("Alineaciones");
        jButton1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jButton1.setFocusable(false);
        jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        jButton1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton1ActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(jButton1);
        toolBarPrincipal.add(jSeparator8);

        btnRegistroSalida.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_out.png"))); // NOI18N
        btnRegistroSalida.setText("Registro Salida");
        btnRegistroSalida.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnRegistroSalida.setFocusable(false);
        btnRegistroSalida.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnRegistroSalida.setOpaque(false);
        btnRegistroSalida.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRegistroSalidaActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnRegistroSalida);
        toolBarPrincipal.add(jSeparator1);

        btnRegistroEntrada.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_in.png"))); // NOI18N
        btnRegistroEntrada.setText("Registro Entrada");
        btnRegistroEntrada.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnRegistroEntrada.setFocusable(false);
        btnRegistroEntrada.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnRegistroEntrada.setOpaque(false);
        btnRegistroEntrada.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnRegistroEntradaActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnRegistroEntrada);
        toolBarPrincipal.add(jSeparator3);

        btnMovimientos.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/reportes.png"))); // NOI18N
        btnMovimientos.setText("Reportes");
        btnMovimientos.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnMovimientos.setFocusable(false);
        btnMovimientos.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnMovimientos.setOpaque(false);
        btnMovimientos.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnMovimientosActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnMovimientos);
        toolBarPrincipal.add(jSeparator7);

        jButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/truck.png"))); // NOI18N
        jButton3.setText("Modificar ejes");
        jButton3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jButton3.setFocusable(false);
        jButton3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        jButton3.setMaximumSize(new java.awt.Dimension(105, 19));
        jButton3.setMinimumSize(new java.awt.Dimension(105, 19));
        jButton3.setOpaque(false);
        jButton3.setPreferredSize(new java.awt.Dimension(105, 19));
        jButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton3.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton3ActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(jButton3);
        toolBarPrincipal.add(jSeparator2);

        jButton2.setBackground(new java.awt.Color(255, 255, 255));
        jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/excel.png"))); // NOI18N
        jButton2.setText("Exportar");
        jButton2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        jButton2.setFocusable(false);
        jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jButton2.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton2ActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(jButton2);
        toolBarPrincipal.add(jSeparator9);

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/camachosanchez/recursos/16_delete.png"))); // NOI18N
        btnEliminar.setText("  Eliminar  ");
        btnEliminar.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        btnEliminar.setFocusable(false);
        btnEliminar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        btnEliminar.setOpaque(false);
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });
        toolBarPrincipal.add(btnEliminar);

        getContentPane().add(toolBarPrincipal, java.awt.BorderLayout.PAGE_START);

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void btnVerDetalleActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnVerDetalleActionPerformed
// TODO add your handling code here:
    int fila = tblUnidades.getSelectedRow();
    if (fila > -1) {
        int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
        VehiculosJpaController dao = new VehiculosJpaController(null);
        EditorUnidad editor = new EditorUnidad(this, Principal.getInstance(), false, dao.findVehiculos(id), fila);
        editor.setVisible(true);
    } else {
        JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
    }
}//GEN-LAST:event_btnVerDetalleActionPerformed

private void btnMontajesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMontajesActionPerformed
// TODO add your handling code here:
    int fila = tblUnidades.getSelectedRow();
    if (fila > -1) {
        int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
        InspeccionEquipoJdbcControler daoJdbc = new InspeccionEquipoJdbcControler();
        InspeccionEquipo inspeccion = daoJdbc.obtenerUnicaInspeccionEquipo(id);
        if (inspeccion == null) {
            try {
                VehiculosJpaController dao = new VehiculosJpaController(null);
                Vehiculos vehiculo = dao.findVehiculos(id);
                MontajeDesmontaje taller = new MontajeDesmontaje(vehiculo);
                taller.setSize(Principal.getInstance().getEscritorio().getSize());
                Principal.getInstance().getEscritorio().add(taller);
                taller.setVisible(true);
                taller.setMaximum(true);
                taller.generarEsquemaMontaje();
                taller.agregarDescripcionNeumaticos();
            } catch (PropertyVetoException ex) {
                ex.printStackTrace();
            }
        } else {
            JOptionPane.showMessageDialog(this, "No se puede realizar un montaje de una unidad que tiene una entrada pendiente.", "Información", JOptionPane.INFORMATION_MESSAGE);
        }
    } else {
        JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
    }
}//GEN-LAST:event_btnMontajesActionPerformed

private void btnMedicionesActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMedicionesActionPerformed
// TODO add your handling code here:
    int fila = tblUnidades.getSelectedRow();
    if (fila > -1) {
        int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
        VehiculosJpaController dao = new VehiculosJpaController(null);
        Vehiculos vehiculo = dao.findVehiculos(id);
        PresionCocada control = new PresionCocada(Principal.getInstance(), true, vehiculo);
        control.setVisible(true);
    } else {
        JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
    }
}//GEN-LAST:event_btnMedicionesActionPerformed

private void btnActualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnActualizarActionPerformed
// TODO add your handling code here:
    llenarTabla();
}//GEN-LAST:event_btnActualizarActionPerformed

    private void btnRegistroSalidaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRegistroSalidaActionPerformed
        // TODO add your handling code here:
        int fila = tblUnidades.getSelectedRow();
        if (fila > -1) {
            int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
//            InspeccionEquipo inspeccion = SQLUtil.obtenerUnicaInspeccionEquipo(id);
            InspeccionEquipoJdbcControler daoJdbc = new InspeccionEquipoJdbcControler();
            InspeccionEquipo inspeccion = daoJdbc.obtenerUnicaInspeccionEquipo(id);
            if (inspeccion == null) {
                VehiculosJpaController dao_vehiculo = new VehiculosJpaController(null);
                Vehiculos vehiculo = dao_vehiculo.findVehiculos(id);
                EntradaSalida guiEntradaSalida = new EntradaSalida(Principal.getInstance(), true, vehiculo, null, true);
                if (!guiEntradaSalida.inicializarForm()) {
                    JOptionPane.showMessageDialog(this, "No se puede realizar una salida, la unidad no tiene neumáticos montados.", "Información", JOptionPane.INFORMATION_MESSAGE);
                } else {
                    guiEntradaSalida.generarEsquemaMontaje();
                    guiEntradaSalida.setVisible(true);
                }
            } else {
                JOptionPane.showMessageDialog(this, "No se puede realizar una salida, tiene una entrada pendiente para la unidad seleccionada.", "Información", JOptionPane.INFORMATION_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btnRegistroSalidaActionPerformed

    private void btnRegistroEntradaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRegistroEntradaActionPerformed
        // TODO add your handling code here:
        int fila = tblUnidades.getSelectedRow();
        if (fila > -1) {
            int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
//            InspeccionEquipo inspeccion = SQLUtil.obtenerUnicaInspeccionEquipo(id);
            InspeccionEquipoJdbcControler daoJdbc = new InspeccionEquipoJdbcControler();
            InspeccionEquipo inspeccion = daoJdbc.obtenerUnicaInspeccionEquipo(id);
            if (inspeccion != null) {
                VehiculosJpaController dao_vehiculo = new VehiculosJpaController(null);
                Vehiculos v = dao_vehiculo.findVehiculos(inspeccion.getIdVehiculoSalida().getId());
                EntradaSalida guiEntradaSalida = new EntradaSalida(Principal.getInstance(), true, v, inspeccion, false);
                guiEntradaSalida.inicializarForm();
                guiEntradaSalida.generarEsquemaMontaje();
                guiEntradaSalida.setVisible(true);
            } else {
                JOptionPane.showMessageDialog(this, "No hay una entrada pendiente para la unidad seleccionada.", "Información", JOptionPane.INFORMATION_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btnRegistroEntradaActionPerformed

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        // TODO add your handling code here:
        int fila = tblUnidades.getSelectedRow();
        if (fila > -1) {
            if (JOptionPane.showConfirmDialog(null, "¿Está seguro que desea eliminar la unidad seleccionada?", "Confirmación", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
                int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
                VehiculosJdbcControler daoJdbc = new VehiculosJdbcControler();
                byte estado = daoJdbc.eliminarVehiculo(id);
                if (estado == 1) {
                    JOptionPane.showMessageDialog(this, "La unidad se encuentra relacionada con otros registros, no puede ser eliminado.", "Error en la eliminación", JOptionPane.ERROR_MESSAGE);
                } else {
                    JOptionPane.showMessageDialog(this, "La unidad se ha eliminado de forma segura.", "Operación finalizada", JOptionPane.INFORMATION_MESSAGE);
                    this.borrarEquipo(fila);
                }
            }
        } else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btnEliminarActionPerformed

    private void btnMovimientosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnMovimientosActionPerformed
        // TODO add your handling code here:
        int fila = tblUnidades.getSelectedRow();
        if (fila > -1) {
            int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
            try {
                BusquedaMovimientosUnidad movimientos = new BusquedaMovimientosUnidad(id);
                movimientos.setSize(Principal.getInstance().getEscritorio().getSize());
                Principal.getInstance().getEscritorio().add(movimientos);
                movimientos.setVisible(true);
                movimientos.setMaximum(true);
            } catch (PropertyVetoException ex) {
                Logger.getLogger(BusquedaEquipo.class.getName()).log(Level.SEVERE, null, ex);
            }
        } else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
        }
    }//GEN-LAST:event_btnMovimientosActionPerformed

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
// TODO add your handling code here:
    int fila = tblUnidades.getSelectedRow();
    if (fila > -1) {
        int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
        try {
            DialogoAlineaciones dlgAlineciones = new DialogoAlineaciones(Principal.getInstance(), true, id);
            dlgAlineciones.setVisible(true);
//                BusquedaMovimientosUnidad movimientos = new BusquedaMovimientosUnidad(id);
//                movimientos.setSize(Principal.getInstance().getEscritorio().getSize());
//                Principal.getInstance().getEscritorio().add(movimientos);
//                movimientos.setVisible(true);
//                movimientos.setMaximum(true);
        } catch (Exception ex) {
            Logger.getLogger(BusquedaEquipo.class.getName()).log(Level.SEVERE, null, ex);
        }
    } else {
        JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
    }
}//GEN-LAST:event_jButton1ActionPerformed

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton2ActionPerformed
// TODO add your handling code here:
    DefaultTableModel modeloParaExportacion = new DefaultTableModel();
    String[] nombresColumna = {
        "Nº DE PLACA", "CÓDIGO", "MARCA", "SERIE DE CHASIS",
        "Nº DE MOTOR", "TIPO", "TANQUE (L)", "FECHA DE COMPRA", "DISTRIBUIDOR",
        "COMBUSTIBLE", "PATIO", "EJES", "CARGA (Kg)", "CARGA (m³)", "FECHA DE REGISTRO"
    };
    modeloParaExportacion.setColumnIdentifiers(nombresColumna);
//    modeloParaExportacion.setColumnCount(17);
    int numeroFilas = tblUnidades.getRowCount();
    for (int i = 0; i < numeroFilas; i++) {
        Object[] fila = new Object[15];
        for (int j = 2, k = 0; j < 17; j++, k++) {
            fila[k] = tblUnidades.getValueAt(i, j);
        }
        modeloParaExportacion.addRow(fila);
    }
    modeloParaExportacion.setRowCount(numeroFilas);
    try {
        ReportUtil.generarReporteExcel("reportes/" + GUIUtil.obtenerFechaDDMMYYYHHMMSS() + ".xls", modeloParaExportacion);
    } catch (Exception e) {
        e.printStackTrace();
    }
}//GEN-LAST:event_jButton2ActionPerformed

    private void btnInformacionActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnInformacionActionPerformed
        // TODO add your handling code here:
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("dd/MM/yyyy");
        try {
            int fila = tblUnidades.getSelectedRow();
            if (fila > -1) {
                int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
                VehiculosJpaController dao_vehiculo = new VehiculosJpaController(null);
                Vehiculos v = dao_vehiculo.findVehiculos(id);
                ControlCambioNeumaticoJdbcControler daoJdbc = new ControlCambioNeumaticoJdbcControler();
                List<DetalleControlCambioNeumatico> detalles = daoJdbc.findUltimoDetalleControlCambio(id);
                ControlCambioNeumatico control = daoJdbc.findUltimoControlCambio(id);
                InformacionUnidad info = new InformacionUnidad();
                info.setPlaca((v.getPlaca() == null) ? "" : v.getPlaca());
                info.setCodigo((v.getCodBarras() == null) ? "" : v.getCodBarras());
                info.setMarca((v.getIdMarca() == null) ? "" : v.getIdMarca().getNombre());
                info.setSerie((v.getSerieChasis() == null) ? "" : v.getSerieChasis());
                info.setNumeroMotor((v.getNumeroMotor()) == null ? "" : v.getNumeroMotor());
                info.setTipo((v.getIdTipo() == null) ? "" : v.getIdTipo().getNombre());
                info.setTanqueLitros((v.getCapacidadTanque() == null) ? "" : v.getCapacidadTanque());
                info.setFechaCompra((v.getFechaCompra() == null) ? "" : formatoDeFecha.format(v.getFechaCompra()));
                info.setDistribuidor((v.getIdDistribuidor() == null) ? "" : v.getIdDistribuidor().getNombre());
                String piloto = "";
                if (!detalles.isEmpty()) {
                    PilotosJpaController dao = new PilotosJpaController(null);
                    Pilotos p = dao.findPilotos(Integer.parseInt(detalles.get(0).getObservacion()));
                    piloto = p.getApellidos() + " " + p.getNombres();
                }
                info.setPiloto(piloto);
                info.setPatio((v.getIdFlotilla() == null) ? "" : v.getIdFlotilla().getNombre());
                info.setEjes((v.getIdTipoEje() == null) ? "" : v.getIdTipoEje().getNombre());
                info.setCargaKilogramos((v.getMaximaCapacidadCargaPeso() == null) ? "" : "" + v.getMaximaCapacidadCargaPeso());
                info.setCargarVolumen((v.getMaximaCapacidadCargaVolumen() == null) ? "" : "" + v.getMaximaCapacidadCargaVolumen());
                info.setFechaRegistro((v.getFechaRegistro() == null) ? "" : formatoDeFecha.format(v.getFechaRegistro()));
                List<String[]> listaNeumaticos = new ArrayList<String[]>();
                if (detalles != null) {
                    for (DetalleControlCambioNeumatico detalle : detalles) {
                        if (detalle.getTipo() >= 0) {
                            String[] llanta = new String[7];
                            llanta[0] = (detalle.getPosicion() <= 0 ? "R" : detalle.getPosicion() + "");
                            llanta[1] = detalle.getIdNeumatico().getCodigo();
                            llanta[2] = (detalle.getIdNeumatico().getNumSerie() == null) ? "" : detalle.getIdNeumatico().getNumSerie();
                            llanta[3] = (detalle.getIdNeumatico().getIdMarca() == null ? "" : detalle.getIdNeumatico().getIdMarca().getNombre());
                            llanta[4] = (detalle.getIdNeumatico().getIdModelo() == null ? "" : detalle.getIdNeumatico().getIdModelo().getMedida());
                            llanta[5] = (detalle.getIdNeumatico().getTipoPiso() == null ? "" : detalle.getIdNeumatico().getTipoPiso().getNombre());
                            llanta[6] = "" + detalle.getIdNeumatico().getNumRenovaciones();
                            listaNeumaticos.add(llanta);
                        }
                    }
                    info.setNeumaticos(listaNeumaticos);
                }
                if (control != null) {
                    List<DetalleControlCambioBateria> detallesB = control.getDetalleControlCambioBateriaList();
                    List<String[]> listaBaterias = new ArrayList<String[]>();
                    for (DetalleControlCambioBateria detalleControlCambioBateria : detallesB) {
                        if (detalleControlCambioBateria.getTipo() == Constantes.MONTAJE || detalleControlCambioBateria.getTipo() == Constantes.SIN_MOVIMIENTO) {
                            String[] bateria = new String[4];
                            bateria[0] = "" + detalleControlCambioBateria.getPosicion();
                            bateria[1] = "" + detalleControlCambioBateria.getIdBateria().getCodigo();
                            bateria[2] = "" + detalleControlCambioBateria.getIdBateria().getIdMarca().getNombre();
                            bateria[3] = "" + detalleControlCambioBateria.getIdBateria().getNroPlacas();
                            listaBaterias.add(bateria);
                        }
                    }
                    info.setBaterias(listaBaterias);
                }
                Impresor impresor = new Impresor(info);
                Principal.getInstance().getEscritorio().add(impresor);
                impresor.setVisible(true);
                impresor.setMaximum(true);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

//        int fila = tblUnidades.getSelectedRow();
//        if (fila > -1) {
//            try {
//                int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
//                ImpresionReportes hojaReporte = new ImpresionReportes(Constantes.REPORTE_INFORMACION_UNIDAD);
//                Principal.getInstance().getEscritorio().add(hojaReporte);
//                hojaReporte.setVisible(true);
//                hojaReporte.setMaximum(true);
//                VehiculosJpaController dao_vehiculo = new VehiculosJpaController(null);
//                Vehiculos v = dao_vehiculo.findVehiculos(id);
//                ControlCambioNeumaticoJdbcControler daoJdbc = new ControlCambioNeumaticoJdbcControler();
//                List<DetalleControlCambioNeumatico> detalles = daoJdbc.findUltimoDetalleControlCambio(id);
//                hojaReporte.generarReporteInformacionUnidad(v, detalles);
//            } catch (Exception e) {
//                JOptionPane.showMessageDialog(Principal.getInstance(), e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
//                e.printStackTrace();
//            }
//        } else {
//            JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
//        }
    }//GEN-LAST:event_btnInformacionActionPerformed

private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton3ActionPerformed
// TODO add your handling code here:
    int fila = tblUnidades.getSelectedRow();
    if (fila > -1) {
        int id = Integer.parseInt(tblUnidades.getValueAt(fila, 1).toString());
        InspeccionEquipoJdbcControler daoJdbc = new InspeccionEquipoJdbcControler();
        InspeccionEquipo inspeccion = daoJdbc.obtenerUnicaInspeccionEquipo(id);
        if (inspeccion == null) {
            try {
                VehiculosJpaController dao = new VehiculosJpaController(null);
                Vehiculos vehiculo = dao.findVehiculos(id);
                DialogoAnulacionEjes dlg = new DialogoAnulacionEjes(Principal.getInstance(), true, vehiculo);
                dlg.setVisible(true);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        } else {
            JOptionPane.showMessageDialog(this, "No se puede realizar un montaje de una unidad que tiene una entrada pendiente.", "Información", JOptionPane.INFORMATION_MESSAGE);
        }
    } else {
        JOptionPane.showMessageDialog(this, "Debe seleccionar una unidad.", "Advertencia", JOptionPane.WARNING_MESSAGE);
    }
}//GEN-LAST:event_jButton3ActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnActualizar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnInformacion;
    private javax.swing.JButton btnMediciones;
    private javax.swing.JButton btnMontajes;
    private javax.swing.JButton btnMovimientos;
    private javax.swing.JButton btnRegistroEntrada;
    private javax.swing.JButton btnRegistroSalida;
    private javax.swing.JButton btnVerDetalle;
    private javax.swing.ButtonGroup buttonGroup1;
    private javax.swing.JButton jButton1;
    private javax.swing.JButton jButton2;
    private javax.swing.JButton jButton3;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JToolBar.Separator jSeparator10;
    private javax.swing.JToolBar.Separator jSeparator11;
    private javax.swing.JToolBar.Separator jSeparator2;
    private javax.swing.JToolBar.Separator jSeparator3;
    private javax.swing.JToolBar.Separator jSeparator4;
    private javax.swing.JToolBar.Separator jSeparator5;
    private javax.swing.JToolBar.Separator jSeparator6;
    private javax.swing.JToolBar.Separator jSeparator7;
    private javax.swing.JToolBar.Separator jSeparator8;
    private javax.swing.JToolBar.Separator jSeparator9;
    private javax.swing.JPanel pnlContenedor;
    private javax.swing.JScrollPane scrContenedor;
    private javax.swing.JTable tblUnidades;
    private javax.swing.JToolBar toolBarPrincipal;
    // End of variables declaration//GEN-END:variables

    public void inicializarTabla() {
        final DialogoCargando dlgCargando = new DialogoCargando(Principal.getInstance(), true);
        Thread hilo = new Thread() {

            @Override
            public void run() {
                try {
                    llenarTabla();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    dlgCargando.dispose();
                }
            }
        };
        hilo.start();
        dlgCargando.setVisible(true);
    }

    public void llenarTabla() {
        modelo.limpiar();
        VehiculosJdbcControler daoJdbc = new VehiculosJdbcControler();
        List<Vehiculos> vehiculos = daoJdbc.findAll();
        for (Vehiculos v : vehiculos) {
            modelo.agregarEquipo(v);
        }
        GUIUtil.SetAnchoColumnas(tblUnidades);
        setColumnaOculta();
    }

    public void borrarEquipo(int fila) {
        modelo.borrarAccion(fila);
    }
}
